本文是学习GB-T 34145-2017 中文语音合成互联网服务接口规范. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们
本标准规定了中文语音合成服务系统在互联网环境下提供服务的能力范围、输入数据、输出数据、
服务接口、接口返回值要求等。
本标准适用于基于互联网的中文语音合成服务系统接口的设计、开发和应用。
下列文件对于本文件的应用是必不可少的。凡是注日期的引用文件,仅注日期的版本适用于本文
件。凡是不注日期的引用文件,其最新版本(包括所有的修改单)适用于本文件。
GB 13000 信息技术 通用多八位编码字符集(UCS)(GB 13000—2010,ISO/IEC
10646:2003,
IDT)
GB 18030 信息技术 中文编码字符集
GB/T 21024—2007 中文语音合成系统通用技术规范
汉语拼音方案(中华人民共和国第一届全国人民代表大会第五次会议决议通过)
RFC 2045 多用途互联网邮件扩展 第1部分:互联网消息体格式[Multipurpose
Internet Mail
Extensions(MIME)Part One: Format of Internet Message Bodies]
RFC 2586 多用途互联网邮件扩展内容类型(The Audio/L16 MIME content type)
RFC 5646 语言标识标签(Tags for Identifying Languages)
SSML 1.1 语音合成置标语言[Speech Synthesis Markup
Language(SSML)Version 1.1]
国际语音学会手册:国际音标使用指南(Handbook of the International
Phonetic Association:A
Guide to the Use of International Phonetic Alphabet)
下列术语和定义适用于本文件。
3.1
语音合成 speech synthesis
将给定的文本转换成与之对应的语音的过程。
3.2
语音合成置标语言 speech synthesis markup
language;SSML
一种丰富的、基于 XML
的语音合成 置标语言,为的是在不同的平台之上提供标准的方式来控制语
音合成的发音、音量、语速等。
3.3
中文语音合成置标语言 Chinese speech synthesis
markup language;CSSML
一套基于XML 的、用于中文语音合成的置标语言。
注:CSSML
可被用于中文语音合成中的资源共享、模块互换,以及分布式应用中的中间数据格式,或者独立系统的
输入控制。
GB/T 34145—2017
3.4
JSON 数据交换格式 javascript object notation;JSON
一种基于文本,独立于语言的简便数据交换格式。
注:JSON
定义了一套小规模的结构化规则来描述轻量级的结构化数据,以文字为基础,易于阅读和计算机分析。
基于互联网的中文语音合成服务系统的能力范围指通过其接口能实现或驱动的功能集,包括基本
功能和扩展功能两大类,基本功能是应具备的功能,扩展功能是宜具备的功能。语音合成服务提供商可
在本功能集的基础上扩展其他功能。
语音合成一般流程的示意图参见图1。图1自上而下表示一个完整的语音合成会话,主要包括开
启会话、写入合成文本、获取合成音频及描述信息和结束会话。
客户端组件
服务器服务组件
语音合成引擎
style="width:10.69375in;height:5.38681in" />
注:虚线框内的"for 0,N,1"表示起始值0、上限 N、 步长为1的循环。
图 1 语音合成一般流程示意图
语音合成服务系统接受规定格式的中文合成文本,将之转换成对应的语音返回给用户。
用户可分多次获取合成音频,将获取到的合成音频拼接后得到完整的合成音频。
语音合成服务系统接受多种字符编码格式的合成文本。
语音合成服务系统提供具备网络交互功能的客户端组件,或提供可进行网络调用的接口。
GB/T 34145—2017
语音合成服务系统在发送端对合成音频进行压缩,在网络传输中使用压缩格式的音频,在接收端对
接收到的压缩格式的音频进行解压缩。
用户训练个性化音色库并使用个性化音色库进行语音合成。
中文语音与其他语种混合的语音合成,如英语、法语、西班牙语等。
语音合成服务系统进行指定方言的语音合成。
语音合成服务系统提供多种音色的音频特征库供用户选择,如青年男声、青年女声、童声等。
语音合成服务系统按照用户指定的合成文本分词方式进行语音合成。
语音合成服务系统按照用户指定的读音或方式进行语音合成。
语音合成服务系统返回与合成音频对应的合成文本位置信息。
语音合成服务系统返回合成文本的分词信息和对应的拼音信息。
4.3.10 音频时间信息
语音合成服务系统返回合成音频对应的起止时间信息。
合成文本的格式分为纯文本和CSSML 格式的文本,其格式规范应符合GB/T
21024—2007 中5.3
输入要求,其字符编码格式规范应完全兼容GB/T 21024—2007中5.6一致性要求。
语音合成参数见表1。语音合成服务系统应支持基本集中的参数,宜支持扩展集中的参数。表1
GB/T 34145—2017
所列参数均为在一路会话中有效的会话参数,如果合成文本中使用了具有局部控制作用的局部参数,则
在局部参数的作用域内,具有相同功能的会话参数不应起作用。5.2定义的参数及其取值不应区分字
母大小写。
表 1 语音合成参数
|
|
|
|
||
---|---|---|---|---|---|
|
|
|
|
||
|
|
|
|
||
|
|
|
![]() |
![]() |
|
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
|
|
|
||
|
参数名:net-timeout
别名:ntt
取值:整数,单位毫秒(ms)。 取值范围为-1和1~30000的整数,
-1表示无超时限制。缺省值为
10000。
说明:网络交互操作中,服务器在设定的时间内无响应即为超时。
参数名:text-type
别名:ttp
取值:字符串,取值包括 plain 和 CSSML,plain 表示纯文本,CSSML
表示中文语音合成置标语言格
GB/T 34145—2017
式的文本。应支持 plain,宜支持 CSSML。 缺省值为 plain。
说明:合成文本的文本类型。
参数名:text-encode
别 名 :tte
取值:字符串,取值包括GB18030、GB13000 等。应支持GB18030,
宜支持GB13000。 缺省值为
GB 18030。
说明:合成文本的字符编码格式。
参数名:audio-format
别名:auf
取值:字符串,取值格式规范同 RFC 2045 的
Content-Type参数,其各子参数取值规范符合 RFC 2586。取值包括
audio/L16;rate=8000、audio/L16;rate=16000 等。应支持 audio/L16;rate=
8000和 audio/L16;rate=16000。 缺省值为 audio/L16;rate=16000。
语音合成服务提供商可扩展支
持其他采样率,也可扩展支持其他子参数。
说明:合成音频的数据格式。
参数名:audio-encode
别名:aue
取值:字符串,取值格式规范同 RFC 2045 的 Content-Type参数,其中的 type
取值为 audio, subtype 取值包括
raw、pcma、pcmu、amr、amr-wb、speex、speex-wb、mp3、aac、celt、silk
等,其中 raw 表 示不压缩,pcma 和 pcmu 分别表示 A-law 和 mu-law。
对于支持可变码率编码的压缩算法,使用子参数 level(或简写为
lvl)指定压缩等级。如取值为“audio/amr-wb;lvl=7”时,语音合成服务系统在网络传输
中使用amr-wb 算法的等级7压缩合成音频。 subtype的取值除 raw
外,宜支持以上音频压缩算法中的 一种或多种。 subtype和
level的缺省值由语音合成服务提供商自定义。语音合成服务提供商可在此
基础上扩展支持其他音频压缩算法。
说明:本参数用来指明使用何种压缩算法对合成音频压缩后进行网络传输。如果语音合成服务系
统不是通过客户端开发组件的方式提供服务,例如通过能直接进行网络调用的接口提供服务,则本参数
无效。
参数名:output-encode
取值:字符串,取值格式规范同5.2.6参数
audio-encode,取值范围为语音合成服务提供商支持的
audio-encode参数值集。缺省值为 audio/raw。
说明:本参数在用户欲获取压缩格式的合成音频时用来声明压缩音频所用压缩算法,其源音频格式
由参数 audio-format(见5.2.5)指定。
参数名:voice-name
别名:vcn
GB/T 34145—2017
取值:字符串,取值包括语音合成引擎内置音色库名称和用户个性化音色库名称。缺省值由语音合
成服务提供商自定义。
说明:语音合成所用音色库名称。音色库名称是区分不同音色库的唯一标识。不同的年龄、性别、
语言风格等特征构成不同的虚拟发音人音色,用户可根据不同需要选择音色库。
参数名:language
别名:lang
取值:字符串,取值规范符合 RFC5646。 应支持中文 zh-CN。 缺省值为
zh-CN。
说明:合成音频所属的语种。本标准包含此参数是为了保持与其他语种语音合成系统的兼容性。
5.2.10 方 言
参数名:dialect
取值:字符串,取值包括 mandarin(普通话)、cantonese(粤语)等。应支持
mandarin。 缺省值为
mandarin。 中文语音合成服务提供商可扩展支持其他方言。
说明:合成音频所属的方言。
5.2.11 领域
参数名:domain
取值:字符串,取值包括 news (新闻)、story(小说或故事)等。缺省值为
news。 中文语音合成服务
提供商可扩展支持其他领域。
说明:合成文本所属领域。不同领域合成文本的发音在情感化方式上有所不同,指明合成文本的领
域属性更有利于提高语音合成的质量。
5.2.12 语速
参数名:speed
取值:类型、取值范围及各值含义和使用规范见SSML1.1 的3.2.4 中的 rate。
说明:合成音频的语速。
5.2.13 音高
参数名:pitch
取值:类型、取值范围及各值含义和使用规范见SSML1.1 的3.2.4中的 pitch。
说明:合成音频的音高。
5.2.14 音 量
参数名:volume
别名:vol
取值:类型、取值范围及各值含义和使用规范见SSML1.1 的3.2.4中的 volume。
说明:合成音频的音量。
5.2.15 背景音
参数名:background-sound
别名:bgs
GB/T 34145—2017
取值:字符串,取值包括语音合成引擎内置背景音标识符(ID)
和背景音的网络统一资源定位符
(URL)。
说明:合成音频的背景音。
5.2.16 数字字符串读法
参数名:number-read
取值:字符串,取值包括
ordinal(按数值发音)、digits(按数字串发音)、score(按比分读法发音)和
fraction(按分数读法发音)。可在每个值后进一步指定子发音方式,中间以“:”(半角冒号)连接。子发
音方式的取值包括 normal(普通发音)、military(军事读法)等,子发音方式取
normal 时可省略。如
"digits:military"表示按数字串军事发音,"digits:normal"等同于"digits"。
应支持 ordinal和 digits。 缺
省值为ordinal,子发音方式缺省值为 normal。
中文语音合成服务提供商可扩展支持其他发音方式。
说明:阿拉伯数字字符串的读法。如“10086”,按数值发音读"一万零八十六",按数字串发音读"一
零零八六",按数字串军事发音读"幺洞洞八六"。
5.2.17 服务模式
参数名:service-mode
取值:字符串,取值包括 cloud(云端合成)、local(本地合成)和
cloud+local(云+端混合模式)。应
支持 cloud。 缺省值为 cloud。
说明:语音合成系统的服务模式。用户可选择云端返回合成文本分词和拼音标注然后在本地进行
合成的云+端混合模式,也可在无网络的情况下选择本地合成。
5.2.18 音频描述信息格式
参数名:audio-info-format
取值:字符串,取值包括json和 xml。 应支持json。 缺省值为json。
说明:合成音频描述信息的文本格式。
5.2.19 音频描述信息编码
参数名:audio-info-encode
取值:字符串,取值规范同5.2.4参数 text-encode。
说明:合成音频描述信息的字符编码格式。
5.2.20 返回标注信息
参数名:mark-info
取值:布尔值,取值包括 true和
false,true表示返回标注信息,false表示不返回。缺省值为true。
说明:指明是否返回合成音频的标注信息。
5.2.21 自定义参数
参数名:vendor-x
取值:字符串。
说明:语音合成服务提供商自定义的合成参数。在自定义参数时用一个字符串替换参数名称中的
“x”,组成新的参数名,同时定义该参数的使用规范。可自定义多个参数。
GB/T 34145—2017
语音合成服务系统的语音合成引擎输出的合成音频数据应至少支持表2的音频数据格式。
表 2 合成音频数据格式
|
|
---|---|
|
|
|
|
合成音频描述信息包括状态信息和标注信息,状态信息标明合成音频的状态,标注信息标明合成文
本和音频的对应关系以及合成文本的分词、拼音信息等。合成音频的描述信息参数见表3。语音合成
服务系统应支持基本集中的参数,宜支持扩展集中的参数。6.2定义的参数及其取值不应区分字母大
小写。合成音频描述信息消息示例参见附录 A。
表 3 合成音频描述信息参数
|
|
|
|
---|---|---|---|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
GB/T 34145—2017
表3(续)
|
|
|
|
---|---|---|---|
|
|
|
|
|
参数名:version
别名:ver
取值:字符串,当前取值为0.1。
说明:当前协议规范的版本号。
允许的父参数:无。
允许的子参数:无。
参数名:audio-state
别名:aus
取值:对象。
说明:当前合成音频的状态。
允许的父参数:无。
允许的子参数:serial-number、out-flag。
参数名:serial-number
别名:sn
取值:整数,从1开始,每次递增加1。
说明:当前合成音频的序列号。
允许的父参数:audio-state。
允许的子参数:无。
参数名:out-flag
别名:ofg
取值:整数,取值包括1和2,1表示还有后继的合成音频,2表示当前音频是最后一块。
说明:当前合成音频的状态标志。
允许的父参数:audio-state。
允许的子参数:无。
参数名:current-end
GB/T 34145—2017
别名:ced
取值:整数,单位字节(B), 取值范围大于等于零,小于合成文本总长度。
说明:当前合成音频结束点对应的合成文本位置。
允许的父参数:无。
允许的子参数:无。
参数名:sentence
取值:对象。
说明:当前合成音频对应的合成文本标注相关信息,包括文本内容、音频起止时间、文本起止位置、
分词、拼音信息等。
允许的父参数:无。
允许的子参数:text、phrase、text-begin、text-end、audio-begin、audio-end。
参数名:text
取值:字符串。
说明:所在对象内的标注信息所对应的文本内容。
允许的父参数:sentence。
允许的子参数:无。
参数名:phrase
取值:对象。
说明:句子的构成等信息,包括分词信息等。
允许的父参数:sentence。
允许的子参数:words。
注:本参数可扩展子参数,用于描述高于字或词级别的节奏、语气及其他信息,如长句中需要换气的位置和停顿的
时长等。
6.2.10 字标注信息集
参数名:words
取值:数组。
说明:句子中各个字或词的标注信息,包括字或词的文本内容,音频起止时间,文本起止位置,音节
信息等。
允许的父参数:phrase。
允许的子参数:word、pinyin、user-pinyin、audio-begin、audio-end、text-begin、text-end、syllable。
6.2.11 字文本
参数名:word
取值:字符串。
说明:所在对象内的标注信息对应的字或词文本内容。
GB/T 34145—2017
允许的父参数:words。
允许的子参数:无。
6.2.12 拼音
参数名:pinyin
取值:字符串。描述的文本为中文字符时,取值应为每一个字符对应的汉语拼音按字符先后顺序拼
接起来的字符串,中间不加分隔符。每一个字符对应的汉语拼音声韵组合规律应符合《汉语拼音方案》,
声调中的阴平、阳平、上声、去声和轻声应分别用1、2、3、4和0表示,如"北京"的普通话汉语拼音表示为
"bei3jing1"。
普通话声母和韵母见《汉语拼音方案》中的声母表和韵母表,其他汉语方言的声母和韵母
见国际语音学会编著的《国际语音学会手册:国际音标使用指南》。非中文字符可不进行拼音标注,省略
参数或取值为空。
说明:所在对象内的文本对应的拼音。
允许的父参数:words。
允许的子参数:无。
6.2.13 用户自定义读音
参数名:user-pinyin
取值:字符串,取值规范同6.2.12参数pinyin。
说明:所在对象内的文本的用户自定义读音,该属性来自用户输入时指定。
允许的父参数:words。
允许的子参数:无。
6.2.14 音节
参数名:syllable
取值:字符串数组。
说明:所在对象内的文本对应的音节信息。
允许的父参数:words。
允许的子参数:无。
6.2.15 音频起始时间
参数名:audio-begin
取值:浮点数,单位毫秒(ms)。
说明:所在对象内的文本对应的音频相对于全局音频的开始时间。
允许的父参数:sentence、words。
允许的子参数:无。
6.2.16 音频终止时间
参数名:audio-end
取值:浮点数,单位毫秒(ms)。
说明:所在对象内的文本对应的音频相对于全局音频的结束时间。
允许的父参数:sentence、words。
允许的子参数:无。
GB/T 34145—2017
6.2.17 文本起始位置
参数名:text-begin
取值:整数,单位字节(B)。
说明:所在对象内的文本相对于整个合成文本的起始位置。
允许的父参数:sentence、words。
允许的子参数:无。
6.2.18 文本终止位置
参数名:text-end
取值:整数,单位字节(B)。
说明:所在对象内的文本相对于整个合成文本的终止位置。
允许的父参数:sentence、words。
允许的子参数:无。
6.2.19 自定义参数
参数名:vendor-x
取值:字符串。
说明:中文语音合成服务提供商自定义的合成音频描述参数。在自定义参数时用一个字符串替换
参数名称中的“x”,组成新的参数名,同时定义该参数的使用规范。可自定义多个参数。
允许的父参数:不做定义。
允许的子参数:不做定义。
接口行为:初始化语音合成服务系统客户端组件,或客户端组件语音合成部分。如果语音合成服务
系统不是通过客户端开发组件的方式提供服务,则本接口可省略。本接口应和逆初始化组件(见7.11)
接口配对使用。
接口输入:不做定义。
接口输出:返回值等。
接口行为:创建一路语音合成会话,可同时设置会话参数,参数有效范围应为设置成功时起至本路
会话结束。
接口输入:可选:合成会话参数等。可一次设置多个会话参数。
接口输出:会话句柄、返回值等。
接口行为:设置一路语音合成会话的参数,参数有效范围应为设置成功时起至本路会话结束。
接口输入:必备:会话句柄、合成会话参数。可一次设置多个会话参数。
GB/T 34145—2017
接口输出:返回值等。
接口行为:写入合成文本。
接口输入:必备:会话句柄、合成文本。可选:合成文本长度等。
接口输出:返回值等。
接口行为:暂停一路语音合成会话。
接口输入:必备:会话句柄。
接口输出:返回值等。
接口行为:恢复一路被暂停的语音合成会话。
接口输入:必备:会话句柄。
接口输出:返回值等。
接口行为:停止当前的语音合成,系统应忽略剩余的合成文本和用户尚未获取的合成音频。本接口
被调用后,用户可重新设置会话参数,再次写入合成文本开始语音合成。
接口输入:必备:会话句柄。
接口输出:返回值等。
接口行为:获取合成音频。本接口可被反复调用,以便于大数据量的合成音频分多次获取。本接口
还可返回合成音频的网络统一资源标识符(uri)给用户,用户用其他方式从指定的位置获取合成音频。
接口输入:必备:会话句柄。
接口输出:返回值、合成音频、合成音频长度、音频 uri等。
接口行为:获取合成音频的描述信息。本接口应和获取合成音频接口配合调用以获取同步的合成
音频描述信息。
接口输入:必备:会话句柄。
接口输出:返回值、合成音频描述信息、合成音频描述信息字符串长度等。
接口行为:结束一路语音合成会话,释放资源。
接口输入:必备:会话句柄。
接口输出:返回值等。
接口行为:逆初始化语音合成服务系统客户端组件,或客户端组件语音合成部分,释放资源。如果
GB/T 34145—2017
语音合成服务系统不是通过客户端开发组件的方式提供服务,则本接口可省略。
接口输入:不做定义。
接口输出:返回值等。
被正确执行的接口返回值应为0,否则应返回非0值,不同的非0值应对应不同的错误原因。
GB/T 34145—2017
(资料性附录)
合成音频描述信息消息示例
A.1 不含标注信息的消息
A.1.1 JSON 格式
|
---|
A.1.2 XML 格式
|
---|
A.2 含标注信息的消息
A.2.1 JSON 格式
|
---|
GB/T 34145—2017
|
---|
GB/T 34145—2017
|
---|
A.2.2 XML 格 式
|
---|
GB/T 34145—2017
|
---|
更多内容 可以 GB-T 34145-2017 中文语音合成互联网服务接口规范. 进一步学习
20230129-中信建投-人工智能行业从CHAT_GPT到生成式AI(Generative AI):人工智能新范式,重新定义生产力.pdf